package com.runccyy.utils;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;

public class GsonUtil {

    private static final Gson GSON = new Gson();

    /**
     * 将JSON字符串转换为指定类型的对象
     *
     * @param json JSON字符串
     * @param clazz 对象类型
     * @param <T> 泛型参数
     * @return 转换后的对象
     */
    public static <T> T fromJson(String json, Class<T> clazz) {
        return GSON.fromJson(json, clazz);
    }

    /**
     * 将JSON字符串转换为指定类型的对象列表
     *
     * @param json JSON字符串
     * @param type 对象列表的类型
     * @param <T> 泛型参数
     * @return 转换后的对象列表
     */
    public static <T> List<T> fromJsonToList(String json, Type type) {
        return GSON.fromJson(json, type);
    }

    /**
     * 将JSON字符串转换为指定类型的对象列表
     *
     * @param json JSON字符串
     * @param <T> 泛型参数
     * @return 转换后的对象列表
     */
    public static <T> List<T> fromJsonToList(String json) {
        Type type = new TypeToken<List<T>>() {
        }.getType();
        return GSON.fromJson(json, type);
    }

    /**
     * 将对象转换为JSON字符串
     *
     * @param object 要转换的对象
     * @return JSON字符串
     */
    public static String toJson(Object object) {
        return GSON.toJson(object);
    }
}